<?php

namespace App\Policies;

use App\Models\Post;
use App\Models\User;

class PostPolicy
{
    /**
     * 判断用户是否可以查看所有文章
     */
    public function viewAny(User $user)
    {
        // 所有登录用户都可以查看
        return true;
    }

    /**
     * 判断用户是否可以查看指定文章
     */
    public function view(User $user, Post $post)
    {
        // 已发布的文章所有人都可以查看
        if ($post->status === 'published') {
            return true;
        }
        
        // 作者可以查看自己的文章
        return $user->id === $post->author_id;
    }

    /**
     * 判断用户是否可以创建文章
     */
    public function create(User $user)
    {
        // 所有登录用户都可以创建文章
        return true;
    }

    /**
     * 判断用户是否可以更新指定文章
     */
    public function update(User $user, Post $post)
    {
        // 只有作者可以更新自己的文章
        return $user->id === $post->author_id;
    }

    /**
     * 判断用户是否可以删除指定文章
     */
    public function delete(User $user, Post $post)
    {
        // 只有作者可以删除自己的文章
        return $user->id === $post->author_id;
    }

    /**
     * 判断用户是否可以恢复指定文章
     */
    public function restore(User $user, Post $post)
    {
        // 只有作者可以恢复自己的文章
        return $user->id === $post->author_id;
    }

    /**
     * 判断用户是否可以永久删除指定文章
     */
    public function forceDelete(User $user, Post $post)
    {
        // 只有作者可以永久删除自己的文章
        return $user->id === $post->author_id;
    }

    /**
     * 判断用户是否可以发布文章
     */
    public function publish(User $user, Post $post)
    {
        // 只有作者可以发布自己的文章
        return $user->id === $post->author_id;
    }
    
    /**
     * 判断用户是否可以管理文章分类
     */
    public function manageCategories(User $user)
    {
        // 所有登录用户都可以管理分类
        return true;
    }
    
    /**
     * 判断用户是否可以管理文章标签
     */
    public function manageTags(User $user)
    {
        // 所有登录用户都可以管理标签
        return true;
    }
} 